package com.wego.pdcms.module.main.controller.admin.patient.vo;

import lombok.*;

import java.time.LocalDate;
import java.util.*;
import io.swagger.annotations.*;
import com.wego.pdcms.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;

import static com.wego.pdcms.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@ApiModel("管理后台 - 患者信息分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class PatientPageReqVO extends PageParam {

    @ApiModelProperty(value = "患者hisId")
    private String patientHisId;

    @ApiModelProperty(value = "门诊号")
    private String outpatientServiceNumber;

    @ApiModelProperty(value = "腹透号")
    private String pdNumber;

    @ApiModelProperty(value = "姓名")
    private String patientNm;

    @ApiModelProperty(value = "拼音码")
    private String patientPy;

    @ApiModelProperty(value = "性别 0女 1男 ")
    private String patientSex;

    @ApiModelProperty(value = "年龄")
    private String patientAge;

    @ApiModelProperty(value = "民族")
    private String patientNation;

    @ApiModelProperty(value = "婚姻状况0001未婚 0002 已婚 0003 丧偶 0004 离婚 0005 其他")
    private String maritalStatus;

    @ApiModelProperty(value = "身份证号")
    private String patientCardId;

    @ApiModelProperty(value = "收费模式")
    private String chargeMode;

    @ApiModelProperty(value = "患者类型")
    private String chargeType;

    @ApiModelProperty(value = "出生日期")
    private String patientBirthday;

    @ApiModelProperty(value = "身高")
    private String patientHeight;

    @ApiModelProperty(value = "净体重")
    private String dryWeight;

    @ApiModelProperty(value = "入院时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String[] inHospitalDate;

    @ApiModelProperty(value = "出院时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String[] dischargeDate;

    @ApiModelProperty(value = "死亡时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String[] deathDate;

    @ApiModelProperty(value = "联系电话")
    private String patientTel;

    @ApiModelProperty(value = "联系电话2")
    private String patientTel2;

    @ApiModelProperty(value = "邮政编码")
    private String postCode;

    @ApiModelProperty(value = "住院号")
    private String hospitalizationNumber;

    @ApiModelProperty(value = "通讯地址")
    private String patientAddress;

    @ApiModelProperty(value = "工作性质 onW退休  offW在职")
    private String patientWorkType;

    @ApiModelProperty(value = "工作单位")
    private String patientUnit;

    @ApiModelProperty(value = "紧急联系人")
    private String emergencyContact;

    @ApiModelProperty(value = "联系人关系")
    private String patientRelation;

    @ApiModelProperty(value = "医保卡号")
    private String yiBaoCard;

    @ApiModelProperty(value = "删除标志位 0删除 1 未删除")
    private String isActive;

    @ApiModelProperty(value = "创建人")
    private String createBy;

    @ApiModelProperty(value = "创建时间")
    private String createDt;

    @ApiModelProperty(value = "更新人")
    private String updateBy;

    @ApiModelProperty(value = "更新时间")
    private String updateDt;

    @ApiModelProperty(value = "患者类型1  1感染 / 0未感染")
    private String patientTypeOne;

    @ApiModelProperty(value = "患者类型2  1住院/2门诊")
    private String patientTypeTwo;

    @ApiModelProperty(value = "诊断")
    private String diagnose;

    @ApiModelProperty(value = "原发病类型")
    private String protopathy;

    @ApiModelProperty(value = "病理诊断")
    private String pathologicDiagnose;

    @ApiModelProperty(value = "合并症")
    private String complication;

    @ApiModelProperty(value = "置管类型")
    private String zhiguanType;

    @ApiModelProperty(value = "置管时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String[] zhiguanDate;

    @ApiModelProperty(value = "既往病史")
    private String pastMedicalHistory;

    @ApiModelProperty(value = "hd几年")
    private String hdYears;

    @ApiModelProperty(value = "肾移植几年")
    private String rtYears;

    @ApiModelProperty(value = "乙肝")
    private String isHepatitisB;

    @ApiModelProperty(value = "丙肝")
    private String isHepatitisC;

    @ApiModelProperty(value = "是否糖尿病")
    private String isDm;

    @ApiModelProperty(value = "尿量")
    private String urinaryVolume;

    @ApiModelProperty(value = "hiv")
    private String isHiv;

    @ApiModelProperty(value = "梅毒")
    private String isSyphilis;

    @ApiModelProperty(value = "病人状态（1入档，2死亡，3结案）")
    private String patientStatus;

    @ApiModelProperty(value = "腹透开始时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String[] firstTreatmentDate;

    @ApiModelProperty(value = "备注")
    private String remarks;

    @ApiModelProperty(value = "离开腹透原因")
    private String leavePdReason;

    @ApiModelProperty(value = "离开腹透日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String[] leavePdDate;

    @ApiModelProperty(value = "腹膜炎重点病人")
    private String isPeritonitisPatient;

    @ApiModelProperty(value = "外口感染患者")
    private String isExternalInfectionPatient;

    @ApiModelProperty(value = "容量管控重点病人")
    private String isCapcontrolPatient;

    @ApiModelProperty(value = "首次腹透时已透次数")
    private Integer firstPdTimes;

    @ApiModelProperty(value = "腹透次数")
    private Integer pdTimes;

    @ApiModelProperty(value = "复查周期")
    private String revisitCycle;

    @ApiModelProperty(value = "首次复诊日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String[] revisitDate;

    @ApiModelProperty(value = "复诊计划id")
    private String revisitRecordsId;

    @ApiModelProperty(value = "随访周期")
    private String followupCycle;

    @ApiModelProperty(value = "下次随访日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String[] nextFollowupDate;

    @ApiModelProperty(value = "标记患者")
    private String patientFlag;

    @ApiModelProperty(value = "死亡原因")
    private String deathReason;

    @ApiModelProperty(value = "初次诊断（上报平台的临床诊断）")
    private String linchuangZhenduan;

    @ApiModelProperty(value = "转为血透原因")
    private String hemodialysisReason;

    @ApiModelProperty(value = "教育程度")
    private String educationLevel;

    @ApiModelProperty(value = "职业")
    private String occupation;

    @ApiModelProperty(value = "原发病诊断日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String[] protopathyDate;

    @ApiModelProperty(value = "临床诊断日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String[] clinicalDiagnosisDate;

    @ApiModelProperty(value = "是否导出过退出记录：0为未导出，1为已导出")
    private String isInOutExportStatus;

    @ApiModelProperty(value = "门诊为1，住院为2")
    private String patientProperty;

    @ApiModelProperty(value = "app注册码")
    private String registrationCode;

    @ApiModelProperty(value = "二维码")
    private byte[] qrCodeImg;

    @ApiModelProperty(value = "责任护士")
    private String chargeNurse;

    @ApiModelProperty(value = "责任医生")
    private String chargeDoctor;

    @ApiModelProperty(value = "住院次数")
    private String hospitalTimes;

    @ApiModelProperty(value = "住院科室")
    private String hospitalDepart;

    @ApiModelProperty(value = "住院床位号")
    private String hospitalBed;

    @ApiModelProperty(value = "责任医生所属科室")
    private String chargeDoctorDepart;

    @ApiModelProperty(value = "科室编码")
    private String hospitalDepartNumber;

    @ApiModelProperty(value = "病历类型日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDate[] caseTypeDate;

    @ApiModelProperty(value = "病理类型结果")
    private String caseTypeResult;

    @ApiModelProperty(value = "是否注册")
    private String isRegister;

    @ApiModelProperty(value = "下次置管日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String[] nextVasDate;

    @ApiModelProperty(value = "下次透析充分性日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String[] nextKtvDate;

    @ApiModelProperty(value = "下次腹膜平衡试验日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String[] nextPetDate;

    @ApiModelProperty(value = "录入时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private String[] inDate;

    @ApiModelProperty(value = "失访原因")
    private String lostFollowReason;

}
